#include <cstdlib>
#include "TelaCliente.h"

/**
 *  \brief Construtor
 *
 *  \param sys Instancia do Controlador
 */
TelaCliente::TelaCliente(Controlador* sys)
{
	Sistema = sys;
}

/**
 * Destrutor
 */
TelaCliente::~TelaCliente()
{

}

/**
 * Exibe a tela
 *
 * Exibe a tela, com a opcoes disponiveis para o usuario
 */
void TelaCliente::Show()
{
	vector<Interesse> interesses;
	vector<Livro> livros;

	system("clear");

	interesses = Sistema->GetUsuario()->GetInteresses();

	if (interesses.size() > 0) {
		cout << endl << "Interesses cadastrados: " << endl;

		for(unsigned int i=0; i<interesses.size(); i++) {
			switch(interesses.at(i).GetTipo()) {
			case 1:
				cout << endl << "\t> Tema: ";
				break;
			case 2:
				cout << endl << "\t> Autor: ";
				break;
			case 3:
				cout << endl << "\t> Titulo: ";
				break;
			default:
				cout << endl << "\t> Indefinido: ";
			}
			cout << interesses.at(i).GetValor();
		}

		cout << endl;
	}

	livros = Sistema->GetUsuario()->GetLivrosDeInteresses();

	if (livros.size() > 0) {
		cout << endl << "Livros cadastrados: " << endl;

		for(unsigned int i=0; i<livros.size(); i++) {
			cout << endl << "\t> " << livros.at(i).GetTitulo();
		}

		cout << endl;
	}

	cout << endl << "Escolha uma opcao: " << endl << endl;
	cout << "1 - Interesse por Tema " << endl;
	cout << "2 - Interesse por Autor " << endl;
	cout << "3 - Interesse por Titulo " << endl << endl;
	cout << "9 - Voltar " << endl;
	cout << "0 - Sair " << endl << endl;

	GetOpcao();
}

/**
 * Le a opcao
 *
 * Interpreta a opcao escolhida pelo usuario
 */
void TelaCliente::GetOpcao()
{
	char op;
	string valor = "Sun, Tzu";
	vector<Livro> result;
	Usuario *u;

	u = Sistema->GetUsuario();

	cout << "Opcao: ";
	cin.getline(&op, 2);

	switch(op) {
	case '0':
		exit(0);
		break;
	case '1':
		break;
	case '2':
		Sistema->MontaPesquisa(2);

		cout << endl << "Digite o nome do Autor: ";
		getline(cin, valor);

		cout << "Resultado da pesquisa: " << endl;
		result = Sistema->PesquisaInteresses(valor);

		for(unsigned int i=0; i<result.size(); i++) {
			cout << "Livro: " << result.at(i).GetTitulo() << endl;
		}

		if (result.size() > 0) {
			cout << endl << "Grava interesse? [S, N]: ";
			cin.getline(&op, 2);

			switch(op) {
			case 'S':
			case 's':
				Interesse it;
				it.SetTipo(2);
				it.SetValor(valor);

				u->AdicionaInteresse(it);

				for(unsigned int i=0; i<result.size(); i++) {
					u->AdicionaLivroDeInteresse(result.at(i));
				}
			}

			u->GravaInteresses();
			u->GravaLivrosDeInteresses();
		}

		else {
			cout << endl << "Tecle ENTER para continuar...";
			cin.getline(&op, 2);
		}

		break;
	case '3':
		break;
	case '9':
		return;
		break;
	}
	Show();
}

/**
 * SubmeteDado
 */
void TelaCliente::SubmeteDado()
{


}
